package com.chen.authority.model.dto;

import com.chen.authority.common.model.Dto;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;

/**
 * 菜单 数据传输对象
 *
 * @author chengy
 * @date 2022/11/23
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class MenuDto extends Dto {

    /**
     * 菜单名称
     */
    @NotBlank(message = "菜单名称不能为空")
    @ApiModelProperty(value = "菜单名称", required = true)
    private String name;

    /**
     * 父菜单ID
     */
    @NotNull(message = "父菜单ID不能为空")
    @ApiModelProperty(value = "父菜单ID（目录为0）", required = true)
    private Integer parentId;

    /**
     * 菜单排序
     */
    @NotNull(message = "菜单排序不能为空")
    @ApiModelProperty(value = "菜单排序", required = true)
    private Integer sort;

    /**
     * 路由地址
     */
    @ApiModelProperty(value = "路由地址（按钮为空）", required = true)
    private String path;

    /**
     * 组件路径
     */
    @ApiModelProperty("组件路径")
    private String component;

    /**
     * 菜单类型（D目录 M菜单 B按钮）
     */
    @NotBlank(message = "菜单类型不能为空")
    @ApiModelProperty(value = "菜单类型", required = true)
    private String type;

    /**
     * 显示状态（1显示 0隐藏）
     */
    @NotNull(message = "显示状态不能为空")
    @ApiModelProperty(value = "显示状态（1显示 0隐藏）", required = true)
    private Integer visible;

    /**
     * 菜单状态（1启用 0禁用）
     */
    @NotNull(message = "菜单状态不能为空")
    @ApiModelProperty(value = "菜单状态（1启用 0禁用）", required = true)
    private Integer status;

    /**
     * 权限标识
     */
    @ApiModelProperty("权限标识")
    private String permission;

    /**
     * 菜单图标
     */
    @ApiModelProperty("菜单图标")
    private String icon;

}
